package jevon.philautus.utils;

import javax.persistence.EntityManager;

import jevon.philautus.domain.Pager;

public class DBHelper {
	/**
	 * 分页的支持类
	 * 
	 * @param <T>
	 *            类型
	 * @param sql
	 *            sql语句，不能是select count(*)开头的
	 * @param pager
	 *            页面对象，必须初始化currentpage 和 pagesize属性
	 * @param em
	 *            持久化作用域
	 * @return 包含List的页面对象
	 */
	@SuppressWarnings("unchecked")
	public static <T> Pager<T> pager(String sql, Pager<T> pager,
			EntityManager em) {
		long count = (Long) em.createQuery("select count(*) " + sql)
				.getSingleResult();
		int size = pager.getPageSize();
		count = count % size == 0 ? count / size : count / size + 1;
		System.out.println(count);
		pager.setTotalPages((int) count);
		pager.setList(em.createQuery(sql)
				.setFirstResult((pager.getCurrentPage() - 1) * size)
				.setMaxResults(size).getResultList());
		return pager;
	}
}
